home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / TEMP / GNU / bison / RpcalcDecm < prev    next >
Text File  |  1995-06-28  |  2KB  |  46 lines

  1. Rpcalc Decls
  2. Previous: <RPN Calc=>RPNCalc> * Next: <Rpcalc Rules=>RpcalcRulf> * Up: <RPN Calc=>RPNCalc>
  3.  
  4. #Wrap on
  5. {fH4}Declarations for {fCode}rpcalc{f}{f}
  6.  
  7. Here are the C and Bison declarations for the reverse polish notation
  8. calculator.  As in C, comments are placed between {fEmphasis}\/\*…\*\/{f}.
  9.  
  10. #Wrap off
  11. #fCode
  12. \/\* Reverse polish notation calculator. \*\/
  13.  
  14. %\{
  15. \#define YYSTYPE double
  16. \#include <math.h>
  17. %\}
  18.  
  19. %token NUM
  20.  
  21. %% \/\* Grammar rules and actions follow \*\/
  22. #f
  23. #Wrap on
  24.  
  25. The C declarations section (\*Note <C Declarations=>CDeclarati>: The C Declarations Section) contains two
  26. preprocessor directives.
  27.  
  28. The {fCode}\#define{f} directive defines the macro {fCode}YYSTYPE{f}, thus
  29. specifying the C data type for semantic values of both tokens and groupings
  30. (\*Note <Value Type=>ValueType>: Data Types of Semantic Values).  The Bison parser will use whatever type
  31. {fCode}YYSTYPE{f} is defined as; if you don't define it, {fCode}int{f} is the
  32. default.  Because we specify {fCode}double{f}, each token and each expression
  33. has an associated value, which is a floating point number.
  34.  
  35. The {fCode}\#include{f} directive is used to declare the exponentiation
  36. function {fCode}pow{f}.
  37.  
  38. The second section, Bison declarations, provides information to Bison about
  39. the token types (\*Note <Bison Declarations=>BisonDecla>: The Bison Declarations Section).  Each terminal symbol that is
  40. not a single-character literal must be declared here.  (Single-character
  41. literals normally don't need to be declared.)  In this example, all the
  42. arithmetic operators are designated by single-character literals, so the
  43. only terminal symbol that needs to be declared is {fCode}NUM{f}, the token
  44. type for numeric constants.
  45.  
  46.